[ 템플릿 코드 ]
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> number) {
int answer = 0;
return answer;
}[ 풀이 ]
#include <vector>
using namespace std;
int solution(vector<int> number)
{
int answer = 0;
for (int i = 0; i < number.size() - 2; i++)
{
for (int j = i + 1; j < number.size() - 1; j++)
{
for (int k = j + 1; k < number.size(); k++)
{
if (number[i] + number[j] + number[k] == 0)
{
answer++;
}
}
}
}
return answer;
}[ 해설 ]
#include <vector>
using namespace std;
int solution(vector<int> number)
{
// 삼총사를 만들 수 있는 경우의 수를 저장할 변수
int answer = 0;
// 첫 번째 학생을 선택하는 반복문
// 뒤에서 최소 2명을 더 뽑아야 하므로
// number.size() - 2 전까지만 순회
for (int i = 0; i < number.size() - 2; i++)
{
// 두 번째 학생을 선택하는 반복문
// 이미 첫 번째 학생으로 i를 선택했기 때문에
// 중복 선택을 방지하기 위해 i + 1부터 시작
for (int j = i + 1; j < number.size() - 1; j++)
{
// 세 번째 학생을 선택하는 반복문
// 마찬가지로 중복 조합을 막기 위해
// j 다음 위치인 j + 1부터 시작
for (int k = j + 1; k < number.size(); k++)
{
// 선택된 세 학생의 번호를 모두 더함
int sum = number[i] + number[j] + number[k];
// 세 학생의 번호 합이 0이면
// 문제에서 말하는 '삼총사' 조건을 만족
if (sum == 0)
{
// 삼총사 개수 1 증가
answer++;
}
}
}
}
// 최종적으로 찾은 삼총사 개수 반환
return answer;
}[ 타 답안 ]